When running a local PlanarAlly server on a Gameboard, you're able to create new campaigns based on existing map assets provided to us by third party publishers. This document goes into the details of how these external resources should be packaged and provided to the Last Gameboard.

It is important to realize that this is limited to sharing maps in the dd2vtt or uvtt format and/or pdf files.

Why dd2vtt/uvtt?

.dd2vtt/.uvtt files are a common export format from map tools. They include map data as well as information on lights, walls and doors. They however do not contain information on npc's/monsters/other assets.

Summary Information

In order to show your campaign as part of a listing users can browse through, we need the following information:

This information has to be included in a JSON file named info.json requiring the following structure:

{
    name: string;
    authors?: string[];
    description?: string;
    logo?: string;
}

The authors and description field are not yet used in the first version of the campaign listing, but will most likely be used in following iterations.

Campaign Files

The actual campaign files should be a collection of .dd2vtt and/or .uvtt files for the map assets along with a collection of .pdf files.

Along with these files, a JSON formatted file called details.json should also be provided, containing information on these files.

{
    format: number; // Can only be 1 at this point in time
    pdfs: string[];
    maps: string[];
}

The pdfs field, should be a string array containing the titles of the PDF files, the maps field, should be a string array containing the titles of the map files.

When PlanarAlly loads this data, it will create a new campaign and make a location for each provided map, centering the .dd2tt or .uvtt data on the (0, 0) coordinate of that location. The locations will copy the name of the map.

An AWS S3 bucket is used to maintain the information on the campaigns provided to us.

A file campaigns.json is used to track summary information and is loaded by the client when displaying the list of available campaigns. This file follows the following JSON format:

{
    format: number; // Can only be 1 at this point in time
    campaigns: CampaignInfo[];
}

Where CampaignInfo is defined as follows:

{
    key: string;
    name: string;
    authors?: string[];
    description?: string;
    logo?: string;
}

This follows the required information that third-party publishers should provide in their info.json file, with the addition of a key field that is used to indicate the subfolder name in which the campaign details can be found.

The campaign files along with the details.json file should then be stored in the aforementioned subfolder named by the key field.

Server Requirements

The local PlanarAlly server should be able to understand the format of the JSON files. If the format field in either info or details is unknown to the local server, it should be made clear that the server first has to be updated before proceeding with importing the desired campaign.

Given that to use this campaign system, you need internet to browse and load the data, this should not be a problem for end-users.